home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib11.dsk / SOUTHERN DRAW.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  100 lines

  1. 10  REM  **********************
  2. 11  REM  * SOUTHERN DRAW      *
  3. 12  REM  * BY DON O'SHEA      *
  4. 13  REM  * COPYRIGHT (C) 1982 *
  5. 14  REM  * BY MICRO-SPARC INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 25 D$ =  CHR$(4):BELL$ =  CHR$(7): TEXT 
  9. 30  DIM C$(7),D$(2): FOR I = 0 TO 7: READ C$(I): NEXT 
  10. 35  POKE 232,252: POKE 233,29
  11. 40  PRINT D$;"BLOAD ARROW7,A$1DFC"
  12. 45  PRINT D$;"BLOAD MOVE.X,A$300"
  13. 50 X = 140:Y = 80:H = 3:B% = 1:D = 1:SIZE = 1:C = 128/3.141592654: HCOLOR= H:T =  -16301
  14. 55  HOME : VTAB 10: HTAB 15: PRINT "SOUTHERN DRAW": HTAB 15: PRINT "BY DON O'SHEA": VTAB 18: PRINT "(C) 1982 BY MICRO-SPARC, INC.": FOR I = 1 TO 2000: NEXT I: GOTO 450
  15. 60  VTAB 21: PRINT :X$ = "  " + STR$(X):Y$ = "       " + STR$(Y): VTAB 22: PRINT "X="; RIGHT$(X$,3);: HTAB 10: PRINT " Y="; RIGHT$(Y$,3);: HTAB 20: PRINT "COLOR:";C$(H): HCOLOR= H: PRINT 
  16. 65  VTAB 23: PRINT : VTAB 23: PRINT "DRAW:";: IF D = 1  THEN  PRINT "OFF";: GOTO 75
  17. 70  PRINT " ";: FLASH : PRINT "ON";: NORMAL 
  18. 75  HTAB 10: PRINT " STEP:";B%;: HTAB 20: PRINT "PENCIL:";SIZE;: PRINT " (Q:HELP)": RETURN 
  19. 100  REM  *******************
  20. 105  REM         TRAPS
  21. 110  REM  *******************
  22. 115  IF A$ = "G"  THEN H = 1: GOSUB 60: RETURN 
  23. 120  IF A$ = "V"  THEN H = 2: GOSUB 60: RETURN 
  24. 125  IF A$ = "W"  THEN H = 3: GOSUB 60: RETURN 
  25. 130  IF A$ = "O"  THEN H = 5: GOSUB 60: RETURN 
  26. 135  IF A$ = "B"  THEN H = 6: GOSUB 60: RETURN 
  27. 140  IF A$ = "X"  THEN H = 0: GOSUB 60: RETURN 
  28. 145  IF A$ = "F"  THEN T =  -(32603 +T): POKE T,0: RETURN 
  29. 150  IF A$ =  CHR$(32)  THEN D = 3 -D: GOSUB 60:Z =  FRE(0): RETURN 
  30. 155  IF Z >0  AND Z <10  THEN B% = Z: GOSUB 60: RETURN 
  31. 160  IF A$ = "Y"  THEN SIZE = 1: GOSUB 60: RETURN 
  32. 165  IF A$ = "U"  THEN SIZE = 2: GOSUB 60: RETURN 
  33. 170  IF A$ = "H"  THEN SIZE = 3: GOSUB 60: RETURN 
  34. 175  IF A$ = "J"  THEN SIZE = 4: GOSUB 60: RETURN 
  35. 180  IF A$ = "N"  THEN SIZE = 5: GOSUB 60: RETURN 
  36. 185  IF A$ = "M"  THEN SIZE = 6: GOSUB 60: RETURN 
  37. 190  IF A$ = "P"  THEN  GOSUB 340: RETURN 
  38. 195  IF A$ = "R"  THEN  GOSUB 350: RETURN 
  39. 200  IF A$ = "L"  THEN  GOSUB 360: XDRAW 7 AT X,Y: GOSUB 340: RETURN 
  40. 205  IF A$ = "S"  THEN  GOSUB 380: RETURN 
  41. 210  IF A$ = "*"  THEN  HPLOT X,Y: CALL 62454: XDRAW 7 AT X,Y: RETURN 
  42. 215  IF A$ = "Q"  THEN  GOSUB 730: GET E$: POKE  -16304,0: HOME : GOSUB 60: RETURN 
  43. 220  PRINT BELL$;: RETURN 
  44. 225  PRINT BELL$;: RETURN 
  45. 300  REM  *******************
  46. 310  REM      SCREEN CONTROL
  47. 320  REM       SUBROUTINES
  48. 330  REM  *******************
  49. 340  XDRAW 7 AT X,Y: POKE 4,0: CALL 768: XDRAW 7 AT X,Y: RETURN 
  50. 350  XDRAW 7 AT X,Y: POKE 0,0: POKE 1,64: POKE 2,0: POKE 3,32: CALL 790: XDRAW 7 AT X,Y: RETURN 
  51. 360  HOME : VTAB 21: INPUT "FILE TO BE LOADED: ";F$
  52. 365  IF  RIGHT$(F$,1) =  CHR$(27)  THEN  HOME : GOSUB 60: RETURN 
  53. 370  PRINT D$;"BLOAD";F$;",A$2000": HOME : GOSUB 60: RETURN 
  54. 380  HOME : VTAB 21: INPUT "FILE TO BE SAVED: ";F$: XDRAW 7 AT X,Y
  55. 385  IF  RIGHT$(F$,1) =  CHR$(27)  THEN  HOME : GOSUB 60: RETURN 
  56. 390  PRINT D$;"BSAVE ";F$;",A$2000,L$1FF8": HOME : GOSUB 60: RETURN 
  57. 400  REM    *******************
  58. 410  REM       MAIN PROGRAM
  59. 420  REM   KEYBOARD AND PADDLE
  60. 430  REM         ROUTINES
  61. 440  REM    *******************
  62. 450  HGR : GOSUB 60
  63. 460  SCALE= 4
  64. 470  ROT=  PDL(0)/4: XDRAW 7 AT X,Y
  65. 480 Z =  PEEK( -16384): POKE  -16368,0: IF Z >127  THEN A$ =  CHR$(Z -128):Z =  VAL(A$): GOSUB 105
  66. 490  IF  PEEK( -16287) <128  THEN  XDRAW 7 AT X,Y: GOTO 470
  67. 500 W =  PDL(0)/C:X1 = X:Y1 = Y
  68. 510 X = X + INT(B% * SIN(W) +.5)
  69. 520 Y = Y - INT(B% * COS(W) +.5)
  70. 530  IF Y <0  THEN Y = 0: PRINT BELL$;
  71. 540  IF X <0  THEN X = 0: PRINT BELL$;
  72. 550  IF Y >191  THEN Y = 191: PRINT BELL$;
  73. 560  IF X >279  THEN X = 279: PRINT BELL$;
  74. 570  GOSUB 60
  75. 575  REM  *********************
  76. 580  REM  DRAW ROUTINE (IF D=2)
  77. 585  REM  *********************
  78. 590  IF D = 1  THEN  XDRAW 7 AT X1,Y1: GOTO 460
  79. 600  IF SIZE = 1  THEN  XDRAW 7 AT X1,Y1: HPLOT X1,Y1 TO X,Y: GOTO 460
  80. 610  XDRAW 7 AT X1,Y1: SCALE= 1: DRAW SIZE AT X,Y: GOTO 460
  81. 700  REM  *******************
  82. 710  REM    PROGRAM COMMANDS
  83. 720  REM  *******************
  84. 730  TEXT : HOME : HTAB 14: PRINT "SOUTHERN DRAW": HTAB 14: PRINT "BY DON O'SHEA"
  85. 740  PRINT : INVERSE : PRINT "PENCIL CONTROL";: NORMAL : HTAB (21): INVERSE : PRINT "SCREEN CONTROL": NORMAL 
  86. 750  PRINT "PADDLE 0 DIRECTS IT P(UT PG1 ON PG2)"
  87. 760  PRINT "BUTTON 0 MOVES IT   R(ETURN PG2 TO P1)"
  88. 770  PRINT "1-9:STEPS PER MOVE  L(OAD FROM DISK)"
  89. 780  PRINT "SPACE BAR TURNS     S(AVE TO DISK)"
  90. 790  PRINT "DRAW ON AND OFF     F(ULL SCREEN TOGGLE)"
  91. 800  INVERSE : PRINT "COLOR CONTROL";: NORMAL : HTAB (21): INVERSE : PRINT "PENCIL SIZES": NORMAL 
  92. 810  PRINT "W(HITE1)            Y:^ U:*^ H:*^ J:*^*"
  93. 820  PRINT "O(RANGE)            1   2 ** 3 ** 4 ***"
  94. 830  PRINT "B(LUE)                         **   ***"
  95. 840  PRINT "G(REEN)             N:5X5    M:7X8"
  96. 850  PRINT "V(IOLET)            5        6"
  97. 860  PRINT "X:BLACK1"
  98. 870  PRINT "*:CLEARS SCREEN     Y(SIZE1) DRAWS LINE"
  99. 880  PRINT "TO CHOSEN COLOR     EQUAL TO # OF STEPS": RETURN 
  100. 890  DATA  BLACK1," GREEN",VIOLET,WHITE1,BLACK2,ORANGE," BLUE ",WHITE2